package execucaoModoConsole;

import java.util.logging.Logger;
import control.*;
import java.util.*;
import model.*;
/**
 * Classe de teste de algumas funcionalidades!!
 * queria ver se isso realmente funciona xD
 * @author felix
 */
public class SistemaThreedsConsole {

    private static Logger log = Logger.getLogger(SistemaThreedsConsole.class.getName());
    private static ManagementController control = new ManagementController();
    private static MRController mrControl = new MRController();
    private static Scanner scan = new Scanner(System.in);
    
    
    public static void main(String[] args) {
        int opcao = 0;
        do{
            System.out.println("Threeds");
            System.out.println("Selecione a opção desejada:");
            System.out.println("1 - Logar");
            System.out.println("2 - Regintrar-se");
            System.out.println("3 - Sair");   
            try{
                opcao = Integer.parseInt(scan.nextLine());
                if(opcao==1){
                    System.out.println("Login");
                    System.out.println("E-mail:");
                    String email = scan.nextLine();
                    System.out.println("Senha:");
                    String senha = scan.nextLine();
                    String login = control.efetuarLogin(email, senha);
                    if(login.equals("sucesso")){
                        System.out.println("Bem vindo!");
                        Projetista projetista = control.recuperarProjetistaDoBancoDados(email);
                        int opcaoEsquema = 0;
                        do{
                            System.out.println("Esquema");
                            System.out.println("1 - Novo");
                            System.out.println("2 - Alterar");
                            System.out.println("3 - Excluir");
                            System.out.println("4 - Listar");
                            System.out.println("5 - Entrar");
                            System.out.println("6 - Retornar");
                            opcaoEsquema = Integer.parseInt(scan.nextLine());
                            if(opcaoEsquema == 1){
                                System.out.println("Novo Esquema");
                                System.out.println("Nome:");
                                String nome = scan.nextLine();
                                System.out.println("Descricao:");
                                String descricao = scan.nextLine();
                                System.out.println("Nome do Banco de Dados:");
                                String nomeBD = scan.nextLine();
                                System.out.println("Categoria:");
                                String categoria = scan.nextLine();
                                System.out.println("Nome do Projeto:");
                                String nomeProjeto = scan.nextLine();
                                Esquema esquema = new Esquema(nome, descricao, categoria, nomeBD, nomeProjeto);
                                control.salvarNovoEsquema(esquema);
                                control.adicionarProjetistaAoEsquema(projetista, esquema);
                                System.out.println("Esquema Salvo!");
                            }
                            if(opcaoEsquema == 2){
                                System.out.println("Alterar Esquema");
                                System.out.println("Nome:");
                                String nome = scan.nextLine();
                                System.out.println("Descricao:");
                                String descricao = scan.nextLine();
                                System.out.println("Nome do Banco de Dados:");
                                String nomeBD = scan.nextLine();
                                System.out.println("Categoria:");
                                String categoria = scan.nextLine();
                                System.out.println("Nome do Projeto:");
                                String nomeProjeto = scan.nextLine();
                                Esquema esquema = new Esquema(nome, descricao, categoria, nomeBD, nomeProjeto);
                                control.salvarEsquemaExistente(esquema);
                                System.out.println("Esquema Alterado!");
                            }
                            if(opcaoEsquema == 3){
                                System.out.println("Alterar Esquema");
                                System.out.println("Nome:");
                                String nome = scan.nextLine();
                                Esquema esquema = new Esquema(nome);
                                control.excluirEsquema(esquema);
                                System.out.println("Esquema Excluido!");
                            }
                            if(opcaoEsquema == 4){
                                
                            }
                            if(opcaoEsquema == 5){
                                System.out.println("Entrar Esquema");
                                System.out.println("Nome:");
                                String nome = scan.nextLine();
                                Esquema esquema = control.recuperarEsquemaDoBancoDados(nome);
                                int opcaoMR = 0;
                                do{
                                    System.out.println("Dicionário MR");
                                    System.out.println("1 - Tabelas");
                                    System.out.println("2 - Atributos");
                                    System.out.println("3 - Listar");
                                    opcaoMR = Integer.parseInt(scan.nextLine());
                                    if(opcaoMR == 1){
                                        int opcaoTabela = 0;
                                        System.out.println("Tabela");
                                        System.out.println("1 - Novo");
                                        System.out.println("2 - Alterar");
                                        System.out.println("3 - Excluir");
                                        System.out.println("4 - Listar");
                                        System.out.println("5 - Pesquisar");
                                        System.out.println("6 - Retornar");
                                    }
                                    if(opcaoMR == 2){
                                        int opcaoAtributo = 0;
                                        System.out.println("Atributos");
                                        System.out.println("1 - Novo");
                                        System.out.println("2 - Alterar");
                                        System.out.println("3 - Excluir");
                                        System.out.println("4 - Listar");
                                        System.out.println("5 - Pesquisar");
                                        System.out.println("6 - Retornar");
                                        opcaoAtributo = Integer.parseInt(scan.nextLine());
                                        if(opcaoAtributo == 1){
                                            System.out.println("Alterar Esquema");
                                            System.out.println("Nome:");
                                            nome = scan.nextLine();
                                            System.out.println("Descricao:");
                                            String descricao = scan.nextLine();
                                            System.out.println("Exemplo:");
                                            String exemplo = scan.nextLine();
                                            System.out.println("Observação:");
                                            String observacao = scan.nextLine();
                                            System.out.println("Nulidade:");
                                            String nulidade = scan.nextLine();
                                            System.out.println("Domínio:");
                                            String dominio = scan.nextLine();
                                            System.out.println("Limite MAX:");
                                            int max = Integer.parseInt(scan.nextLine());
                                            System.out.println("Limite MIN:");
                                            int min = Integer.parseInt(scan.nextLine());
                                            AtributoMR atributo = new AtributoMR(nome, descricao, max, min, dominio, nulidade);
                                            atributo.setExemplo(exemplo);
                                            atributo.setObservacao(observacao);
                                            mrControl.salvarAtributo(atributo, esquema);
                                        }
                                    }
                                    if(opcaoMR == 3){
                                        
                                    }
                                }while(opcaoMR == 4);
                            }
                        }while(opcaoEsquema == 6);
                    }
                    else{
                        System.out.println("Login ou senha inválidos!");
                    }
                }
                if(opcao==2){
                 System.out.println("Registra-se");
                 System.out.println("Nome:");
                 String nome = scan.nextLine();
                 System.out.println("E-mail:");
                 String email = scan.nextLine();
                 System.out.println("Senha:");
                 String senha = scan.nextLine();
                 control.salvarProjetista(new Projetista(email, nome, senha));
                 System.out.println("Projetista Salvo!");
                }
            }catch(NumberFormatException e){
                System.out.println("Operação ilegal realizada!");
            }
        }while(opcao!=3);
    }
}
